package member;

import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import common.DBManager;
/**
 * 	利用者検索結果で選択された利用者の情報を
 * 	利用者削除確認画面（Ｐ１３２）へ渡す
 *
 * @author wakabayashi
 *
 */
public class DeleteCheckServlet extends HttpServlet
{
	static Connection connection=null;
	static Statement statement=null;
	static ResultSet resultSet=null;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
	{
		req.setCharacterEncoding("UTF-8");
		resp.setContentType("UTF-8");

		sendInfo(req,resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
	{
		req.setCharacterEncoding("UTF-8");
		resp.setContentType("UTF-8");

		sendInfo(req,resp);
	}

	public void sendInfo(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
	{
		final String PATH_P102 =  "/member/ListServlet";
		final String PATH_P302 =  "userMemberDeleteCheck.jsp";
		String path 		= null;																			//	遷移先アドレス
		String message 	= null;																			//	メッセージ

		//		利用者検索結果（Ｐ１０２）で選択されたユーザ管理ＩＤを受け取る。
		String strId = req.getParameter("id");
		//		ユーザ管理ＩＤが空の場合
		//				メッセージに、「利用者を選択してください。」をセットし、利用者検索結果に遷移する。
		if (strId == null || strId.length() < 1) {
			path = PATH_P102;
			message = "利用者を選択してください。";
		}
		else {
			int user_id = Integer.parseInt(strId);

			//		利用者テーブルより、ユーザ管理ＩＤが一致するレコードを取得する。
			MemberBean member = getMemberInfomation(user_id);
			//				利用者レコードが存在しない場合
			//						メッセージに、「利用者を選択してください。」をセットし、利用者検索結果に遷移する。
			if (member == null) {
				path = PATH_P102;
				message = "利用者を選択してください。";
			}
			//				利用者レコードが存在する場合
			//						利用者レコードより、各項目をリクエスト情報にセットし、利用者削除確認（Ｐ１３２）へ遷移する。
			else {
				path = PATH_P302;
				req.setAttribute("member", member);
			}
		}
		req.setAttribute("msg", message);

		System.out.println("DeleteCheckServlet : sendInfo : " + path);

		RequestDispatcher requestDispatcher=req.getRequestDispatcher(path);
		requestDispatcher.forward(req, resp);
	}

	public static MemberBean getMemberInfomation(int user_id)
	{
		connection=DBManager.getConnection();
		MemberBean memberBean =null;

		try
		{
			statement=connection.createStatement();
			resultSet=statement.executeQuery("SELECT * FROM members WHERE ID = "+ user_id);

			while(resultSet.next())
			{
				memberBean=new MemberBean();

				memberBean.setId(resultSet.getInt("ID"));
				memberBean.setUserId(resultSet.getString("USER_ID"));
				memberBean.setName(resultSet.getString("NAME"));
				memberBean.setRuby(resultSet.getString("RUBY"));
				memberBean.setPassword(resultSet.getString("PASSWORD"));
			}
		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		catch(NumberFormatException e)
		{
			e.printStackTrace();
		}
		finally
		{
			if(statement!=null)
			{
				try
				{
					statement.close();
				}
				catch (SQLException e)
				{
					e.printStackTrace();
				}
			}

			if(connection!=null)
			{
				try
				{
					connection.close();
				}
				catch (SQLException e)
				{
					e.printStackTrace();
				}
			}
		}

		return memberBean;
	}

}
